جزوه · فصل دوم · جلسه ۲۴ · مدیریت بسته در رد هت (dnf و rpm) ← بازگشت به فهرست
📘 فصل دوم · جلسه ۲۴ مدیریت بسته در رد هت (dnf و rpm)
📅 تاریخ: سه‌شنبه، ۲۰ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 📦 Red Hat (RHEL/CentOS/Fedora)

▍ مقدمه

در خانواده رد هت (Red Hat)، دو ابزار اصلی برای مدیریت بسته‌ها وجود دارد:

🔑 تفاوت اصلی:

dnf یک مدیر بسته سطح بالا است که وابستگی‌ها را به‌طور خودکار مدیریت می‌کند. اما rpm یک ابزار سطح پایین است که مستقیماً با فایل‌های .rpm کار می‌کند و وابستگی‌ها را خودکار حل نمی‌کند.

▍ نصب از طریق مخازن با dnf

dnf مخفف Dandified YUM است و نسل جدید مدیر بسته در خانواده رد هت محسوب می‌شود.

• دستورات اصلی dnf

دستور توضیح
sudo dnf update به‌روزرسانی همه بسته‌ها به آخرین نسخه
sudo dnf install [package] نصب یک بسته جدید
sudo dnf remove [package] حذف یک بسته
sudo dnf autoremove حذف بسته‌های غیرضروری
dnf search [keyword] جستجوی بسته در مخازن
dnf info [package] نمایش اطلاعات کامل یک بسته
sudo dnf upgrade ارتقاء بسته‌ها (مشابه update)
sudo dnf distro-sync همگام‌سازی بسته‌ها با مخزن (رفع اختلاف نسخه)
sudo dnf groupinstall "Group Name" نصب یک گروه از بسته‌ها
sudo dnf history نمایش تاریخچه عملیات dnf

• مثال عملی

┌──(user㉿redhat)-[~] └─$ sudo dnf update Last metadata expiration check: 0:00:00 ago
Dependencies resolved.
...
Complete!
└─$ sudo dnf install htop Last metadata expiration check: 0:00:00 ago
Dependencies resolved.
================================================
Package Architecture Version Repository Size
================================================
Installing:
htop x86_64 3.2.2-1.el8 epel 1.2 M

Transaction Summary
================================================
Install 1 Package

Total download size: 1.2 M
Installed size: 4.5 M
Is this ok [y/N]: y

توضیح: ابتدا سیستم به‌روز شد، سپس htop نصب شد.

▍ نصب بدون مخازن با rpm

rpm مخفف Red Hat Package Manager است و اصلی‌ترین ابزار برای کار با فایل‌های .rpm است.

• دستورات اصلی rpm

گزینه توضیح
-i یا --install نصب یک بسته .rpm
-e یا --erase حذف یک بسته
-q یا --query پرس و جو (Query) درباره یک بسته
-qa یا --query --all لیست همه بسته‌های نصب‌شده
-ql یا --query --list لیست فایل‌های نصب‌شده توسط یک بسته
-qf یا --query --file پیدا کردن بسته‌ای که یک فایل خاص را نصب کرده
-qi یا --query --info نمایش اطلاعات یک بسته
-V یا --verify بررسی یکپارچگی بسته
--nodeps نصب بدون بررسی وابستگی‌ها

• مثال عملی

┌──(user㉿redhat)-[~] └─$ sudo rpm -ivh package.rpm Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:package-1.0.0-1.el8 ################################# [100%]

توضیح: نصب یک فایل .rpm با گزینه‌های استاندارد.

• حذف با rpm

┌──(user㉿redhat)-[~] └─$ rpm -e zsh warning: file /etc/zprofile: remove failed: No such file or directory └─$ rpm -q zsh package zsh is not installed

توضیح: حذف بسته zsh و سپس تأیید حذف شدن آن.

▍ کدهای پاسخ تأیید (Verify codes) در rpm

وقتی با rpm -V یک بسته را تأیید می‌کنید، کدهای زیر ممکن است نمایش داده شوند:

کد توضیح
? امکان انجام تست تأیید وجود ندارد
5 مقدار هش (Digest) تغییر کرده است
c فایل یک فایل کانفیگ برای بسته است
D شماره دستگاه (major/minor) تغییر کرده است
G مالکیت گروه تغییر کرده است
L مسیر لینک تغییر کرده است
missing فایل وجود ندارد
M مجوزها یا نوع فایل تغییر کرده است
P قابلیت‌ها (Capabilities) تغییر کرده است
S اندازه فایل تغییر کرده است
T زمان تغییر (Modification) تغییر کرده است
U مالکیت کاربر تغییر کرده است
💡 نکته مهم:

این کدها به شما کمک می‌کنند تا بفهمید کدام بخش از یک بسته در طول زمان تغییر کرده است و آیا فایل‌های آن دستکاری شده‌اند یا خیر.

▍ تفاوت dnf و rpm

ویژگی dnf rpm
سطح سطح بالا (High-level) سطح پایین (Low-level)
مدیریت وابستگی‌ها ✅ خودکار ❌ دستی (مشکل‌دار)
نیاز به مخزن ✅ بله ❌ خیر (فایل .rpm کافی است)
نصب آفلاین ❌ خیر ✅ بله
حل وابستگی‌ها ✅ خودکار ❌ باید جداگانه نصب شوند
جستجو در مخزن ✅ بله (dnf search) ❌ خیر
تأیید یکپارچگی ❌ خیر ✅ بله (rpm -V)

▍ مقایسه نصب در دبیان و رد هت

عملیات دبیان (Debian) رد هت (Red Hat)
نصب از مخزن sudo apt install htop sudo dnf install htop
حذف sudo apt remove htop sudo dnf remove htop
به‌روزرسانی sudo apt update && sudo apt upgrade sudo dnf update
جستجو apt search htop dnf search htop
نصب آفلاین sudo dpkg -i package.deb sudo rpm -ivh package.rpm
لیست فایل‌های بسته dpkg -L htop rpm -ql htop
✅ تمرین پیشنهادی:
  • با sudo dnf update سیستم را به‌روز کنید.
  • با sudo dnf install neofetch یک بسته نصب کنید.
  • با rpm -ql neofetch فایل‌های نصب‌شده را ببینید.
  • با sudo dnf remove neofetch بسته را حذف کنید.
  • با rpm -V neofetch یکپارچگی بسته را بررسی کنید (اگر نصب باشد).
  • با rpm -qa | grep zsh بسته‌های مربوط به zsh را پیدا کنید.